#ifndef _Ape_IO_FS_Path_h
#define _Ape_IO_FS_Path_h

#include <Ape/Object.h>
#include <Ape/String.h>

namespace Ape {
	namespace Collections {
		class StringList;
	}
	namespace IO {
		namespace FS {
			using Ape::Collections::StringList;
			
			class Path : public Object {
				TYPE_NAME ("Ape::IO::FS::Path")
			private:
				String m_OriginalString;
			public:
				Path();
				Path (const wchar_t* wcs);
				Path (const String& s);
				Path (const Path& other);
				
				bool IsAbsolute() const;
				void get_Parts (StringList& parts) const;
				const Path get_Parent() const;
				
				const String get_Name() const;
				const String get_Suffix() const;
				const String get_NoSuffix() const;
				
				
				virtual ~Path();
				
				virtual const String ToString() const;
				virtual void _Dump (bool verbose = false) const;
				
				static Path Combine (const Path& p1, const Path& p2);
			};
		}
	}
}

#endif // _Ape_IO_FS_Path_h
